package fr.afcepf.atod16.groupe1.projet1.service;

import fr.afcepf.atod16.groupe1.projet1.dao.catalogue.DaoFicheProduit;
import fr.afcepf.atod16.groupe1.projet1.dao.catalogue.DaoProduit;
import fr.afcepf.atod16.groupe1.projet1.dao.catalogue.DaoTVA;
import fr.afcepf.atod16.groupe1.projet1.dto.catalogue.DtoFicheProduit;
import fr.afcepf.atod16.groupe1.projet1.dto.catalogue.DtoProduit;
import fr.afcepf.atod16.groupe1.projet1.dto.catalogue.DtoTVA;
import fr.afcepf.atod16.groupe1.projet1.dto.util.DtoProduitPanier;
import fr.afcepf.atod16.groupe1.projet1.dto.util.DtoProduitVignette;
import fr.afcepf.atod16.groupe1.projet2.serviceproduit.ExistException_Exception;
import fr.afcepf.atod16.groupe1.projet2.serviceproduit.InvalidArgumentException_Exception;
import fr.afcepf.atod16.groupe1.projet2.serviceproduit.ServiceProduitStockWebservice;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author G
 */
@Stateless
public class ServiceProduit implements ServiceProduitLocal{
    @EJB
    private DaoFicheProduit daoFicheProduit;
    
    @EJB
    private DaoProduit daoProduit;
    
    @EJB
    private DaoTVA daoTva;
    
    @Override
    public List<DtoProduitVignette> getSelection() {
        return daoFicheProduit.getSelection(3);
    }

    @Override
    public List<DtoProduitVignette> getSelectionPromo() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List<DtoProduitVignette> getSelection(Short categorie) {
        return daoFicheProduit.getSelection(Integer.valueOf(categorie), 3);
    }

    @Override
    public List<DtoProduitVignette> getSelectionPromo(Short categorie) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List<DtoProduitVignette> getListProduit(Short sousCategorie) {
        return daoFicheProduit.getListProduit(Integer.valueOf(sousCategorie));
    }

    @Override
    public DtoFicheProduit getFicheProduit(Integer id) {
           return daoFicheProduit.rechercherParId(id);
    }

    @Override
    public List<DtoProduitVignette> rechercherProduits(String recherche) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public DtoProduitPanier getProduitPanier(Integer idProduit) {
            DtoProduitVignette produitVignette = new DtoProduitVignette();
            DtoFicheProduit ficheProduit = daoFicheProduit.rechercherParId(idProduit);
            produitVignette.setId(idProduit);
            produitVignette.setNom(ficheProduit.getNom());
            produitVignette.setPrix(ficheProduit.getProduit().getPrix());
            //produitVignette.setRemisePromo();
            produitVignette.setVignette(null);  
            return new DtoProduitPanier(1, produitVignette);
    }

    @Override
    public void ajouterProduit(String codeEan13,Integer prix, Integer idTva) throws ExistException_Exception, InvalidArgumentException_Exception {
       
        //Inserer le produit dans la base
        DtoProduit produit = new DtoProduit();
        produit.setCodeEAN13(codeEan13);
        produit.setDateCreation(new Date(System.currentTimeMillis()));
        produit.setPrix(prix);
        produit.setStock(0);
        DtoTVA tva = daoTva.rechercherParId(idTva);
        produit.setTva(tva);
        daoProduit.ajouter(produit);
        
        //Appeler le webService
        ServiceProduitStockWebservice s = new fr.afcepf.atod16.groupe1.projet2.serviceproduit.ServiceProduit().getServiceProduitStockPort();
        s.creerProduit(codeEan13);
    }

    @Override
    public List<DtoTVA> getTvas() {
       return daoTva.lister();
    }
    
    
    
}
